package mornd;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

/**
 * @author: mornd
 * @dateTime: 2023/5/4 - 18:08
 */

@SpringBootApplication
public class App {
    /**
     * 创建->依赖注入->初始化->销毁
     * @param args
     */
    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
        System.out.println("==================");
        context.close();

        /*
        <<<<<<<实例化之前执行，这里返回的不为null就会替换掉原本的bean
        Animal 构造器
        <<<<<<<实例化之后执行，这里返回false会跳过依赖注入阶段
        <<<<<<<依赖注入阶段执行，如@Autowired @Resource @Value
        依赖注入：tom
        <<<<<<<初始化之前，这里的返回值会替换掉原本的bean，如@PostConstruct @ConfigurationProperties
        初始化方法
        <<<<<<<初始化之后执行，这里返回值会替换原本的bean，比如代理增强
        ==================
        <<<<<<<销毁之前执行，如@PreDestroy
        销毁方法
         */
    }
}
